#pragma once
#include <ECS/Algorithms/AStar.h>
#include <ECS/Containers/TiledArray.h>
#include "TileData.h"

class Landscape8DirNode
{
public:

	Landscape8DirNode();
	Landscape8DirNode(MapData* map, int x, int y) : _map(map), _x(x), _y(y) {}

	float GoalDistanceEstimate(const Landscape8DirNode& goal) const;

	bool IsGoal(const Landscape8DirNode& nodeGoal) const;

	bool IsSameState(const Landscape8DirNode& other) const;

	float GetCost(const Landscape8DirNode& other) const;

	bool GetSuccessors(ECS::AStarSearch<Landscape8DirNode>* search, const Landscape8DirNode* parentNode) const;

	int getX() const;
	int getY() const;
protected:
	MapData* _map;
	int _x;
	int _y;
};